package br.edu.universo.si.projeto2.infojob.client.apresentacao;

import br.edu.universo.si.projeto2.infojob.client.bean.BeanProfissionalAssinante;
import br.edu.universo.si.projeto2.infojob.client.util.Util;

import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.DockPanel;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
import com.google.gwt.user.client.ui.HasVerticalAlignment;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;

public class ADetalhesProfissional extends DockPanel
{
	private VerticalPanel vPanel;
	private HorizontalPanel opcoesProfissionalPanel;

	private FlexTable detalhesGrid;
	
	private Button enviarMensagemBtn;
	private Button verCurriculoBtn;

	public ADetalhesProfissional(final Integer idProfissional)
	{
		detalhesGrid = new FlexTable();
		detalhesGrid.setWidget(0, 0, new HTML("DETALHES DO PROFISSIONAL"));
		detalhesGrid.getFlexCellFormatter().setAlignment(0, 0, HasHorizontalAlignment.ALIGN_CENTER, HasVerticalAlignment.ALIGN_MIDDLE);
		detalhesGrid.setWidth("900px");
		detalhesGrid.setCellSpacing(0);
		detalhesGrid.setCellPadding(5);
		detalhesGrid.getFlexCellFormatter().setStyleName(0, 0, "detalhesProfissionalGridTitulo");

		vPanel = new VerticalPanel();
		vPanel.setWidth("850px");

		opcoesProfissionalPanel = new HorizontalPanel();
		opcoesProfissionalPanel.setSpacing(5);

		enviarMensagemBtn = new Button("Enviar mensagem");
		verCurriculoBtn = new Button("Ver Curriculo(s)");

		opcoesProfissionalPanel.add(enviarMensagemBtn);
		opcoesProfissionalPanel.add(verCurriculoBtn);
		
		AsyncCallback<BeanProfissionalAssinante> cbDetalhesProfissional = new AsyncCallback<BeanProfissionalAssinante>()
		{
			public void onSuccess(final BeanProfissionalAssinante profissional)
			{
				if (profissional.getNome() != null)
					vPanel.add(new HTML("Nome: " + profissional.getNome()));
				if (profissional.getEmail() != null)
					vPanel.add(new HTML("Email: " + profissional.getEmail()));
				if (profissional.getDataNascimento() != null)
					vPanel.add(new HTML("Data de Nascimento: " + profissional.getDataNascimento()));
				if (profissional.getTelefoneResidencial() != null)
					vPanel.add(new HTML("Telefone Residencial: " + profissional.getTelefoneResidencial()));
				if (profissional.getCelular() != null)
					vPanel.add(new HTML("Celular: " + profissional.getCelular()));
				if (profissional.getCpf() != null)
					vPanel.add(new HTML("Cpf: " + profissional.getCpf()));
				if (profissional.getRg() != null)
					vPanel.add(new HTML("Rg: " + profissional.getRg()));
				if (profissional.getEndereco() != null)
					vPanel.add(new HTML("Endereço: " + profissional.getEndereco()));

				detalhesGrid.setWidget(1, 0, vPanel);
				detalhesGrid.getFlexCellFormatter().setStyleName(1, 0, "detalhesProfissional");
				
				// ENVIAR MENSAGEM
				enviarMensagemBtn.addClickListener(
						new ClickListener()
						{
							public void onClick(Widget sender)
							{
								ANovaMensagem viewNovaMensagem = new ANovaMensagem(idProfissional);
								viewNovaMensagem.center();
								viewNovaMensagem.show();
							}
						}
				);
				
				// ENVIAR MENSAGEM
				verCurriculoBtn.addClickListener(
						new ClickListener()
						{
							public void onClick(Widget sender)
							{
								ACurriculosByEmpresa viewCurriculos = new ACurriculosByEmpresa(idProfissional);
								ADetalhesProfissional.this.add(viewCurriculos, DockPanel.SOUTH);
							}
						}
				);
			}

			public void onFailure(Throwable caught) {
				// TODO Auto-generated method stub
				
			};
		};

		this.add(detalhesGrid, DockPanel.CENTER);
		this.add(opcoesProfissionalPanel, DockPanel.SOUTH);

		Util.getService().getProfissionalById(idProfissional, cbDetalhesProfissional);
	}
}